"use strict"

let eventBus=(function(){
    let event = new Map()
    let publish
    let subscribe

    subscribe = function(eventName, fn){
        /**
         * eventName 订阅事件名称
         * fn:对获取到的数据的处理函数
         */

        let fns = event.get(eventName)

        if(!fns){
            fns=[]
            fns.push(fn)
            return event.set(eventName,fns) //此处的return用于提前跳出函数调用栈

        }
        return fns.Push(fn)
    }

    publish = function(...args){
        //由于发布的数据长度不确定，因此利用argument的特性
        let eventName =args.shift()
        let fns = event.get(eventName)
        for(let i= -1; fns[++i];){
            fns[i](args)
        }
    }
    return {
        publish,
        subscribe
    }
})()


eventBus.subscribe('3000', function(data) {
    console.log(data)
})

  
eventBus.publish('3000', "地铁站旁， 月2600 联系方式:xxxxxxxx")

eventBus.publish('3000', "郊区， 月1600 联系方式:xxxxxxxx")
